The present disclosure generally relates to panoramic imaging, and more particularly to providing real-time equirectangular projection for panoramic imaging.
Panoramic photography, the taking of a photograph or photographs covering an elongated field of view, has a long history in photography. Perhaps the most primitive method of panoramic photography is the taking of several adjoining photos with a conventional camera and then mounting the prints together in alignment to achieve a complete panorama. Modern techniques adapt this method by using digital cameras to capture the images, and then using computer image processing techniques to align the images for printing as a single panorama.
The continuous development of digital camera technologies along with constantly increasing speed and processing power of computers have laid the foundation for digital imaging systems that are capable of acquiring image data for the automatic creation of wide to entire 360° panoramas, including both still panoramic images and dynamic panoramic movies.
Panoramic imaging systems, including 360-degree panoramic systems, may utilize equirectangular projection, which is a method to project a flat image onto a spherical surface. Equirectangular projection may involve a number of trigonometric calculations with relatively high complexities. In some aspects, equirectangular projection may be implemented in hardware, which is achieved based on a lookup table. For example, a storage unit may store the lookup table and an original image, then perform a point-by-point mapping of the pixels in the original image to a projection image by a point-by-point table lookup according to addresses in the lookup table. Implementation in hardware may reduce the utilization of bandwidth for accessing the storage units, and also require a relatively long time to complete the mapping process for a flat image. In some aspects, equirectangular projection may be implemented in computer software, for example, on a host computer. The processing speed for implementing in software may be slow. In addition, implementation in software may strongly depend on the capability of the computer, and thus not suitable for implementing in hardware.